ユニオンツールで複数列のフィルタ/並べ替え #Alteryx
ユニオンツールを使用した複数列のフィルタ/並べ替えの手順です。
前提条件
下記の環境で検証しています。
- Windows 10 Pro
- Alteryx Designer 2022.3.1
複数列のフィルタ/並べ替え
Alteryxで列の並び替えやフィルタを行う際は、セレクトツールや動的セレクトツールを使用できます。しかし、入力データセットの列数が多い(数100を超える など)場合、下記のように、これらのツールによる作業が難しくなることがあります。
- セレクトツール
- すべての列選択や強調表示した列の選択/選択解除機能を使用しても、列数が多い、列が規則的に並んでいない場合は、列単位で設定する必要がある。
- 動的セレクトツール
- 条件式やフィールドタイプの一括指定が適用できる列構成でない場合、セレクトツールを使用することになる。
- 列の並べ替えは行えない。
そこで、ここではユニオンツールを使用した方法をご紹介します。
名前による自動設定 オプション
ユニオンツールでの列のフィルタ/並べ替えには、「名前による自動設定」オプションを使用します。このオプションの特徴は、下記の通りです。
- 入力データセットの列名に基づき、各データセットを縦に結合
※列名の大文字小文字は区別されません。
Alteryxで大文字小文字を含む文字列を扱う際の注意点 | DevelopersIO - 出力列順は、ツールに一番初めに接続したデータセットの列順となります
→列の並べ替えに利用可能 - さらに「フィールドが異なる場合」のオプションを「フィールドの共通サブセットを出力」とすると、入力データセットすべてに共通する列のみの出力とできます
→列のフィルタとして利用可能
これらより、ユニオンツールに列のフィルタや並べ替えを行いたいデータセットと、出力したい列形式のデータセットを接続することで、セレクトツールと同様の処理を行ってくれるというものになります。
サンプルワークフロー
例とあわせて設定をご紹介します。ここでは、アンケートデータを並べ替えるという設定です。
サンプルデータの内容は下記の通りです。
- 100行201列のデータ
- 1列目:アンケートのモニタID
→各行が一人のモニタの回答を表します
- 1列目:アンケートのモニタID
- アンケートの質問は100問
- 2-101列:アンケートの回答ラベル
※ここでは、質問番号と回答を連結した文字列 - 102-201列:アンケートの回答(1 or 0)
- 2-101列:アンケートの回答ラベル
モニタIDと回答ラベルの一部
アンケート回答の一部
目標は、アンケートの回答ラベル・回答順に列が並んでいるデータを、下記のように、質問番号順に表示し、かつ回答ラベル・回答順に並べ替えるとします。
質問数が100あるので、セレクトツールで並べ替えるには面倒なため、ユニオンツールを使用します。これにあたり、下記のように並べ替えたい順の列ヘッダのみからなるデータを用意します。
下図の通り、ユニオンツールに接続します。
- #1 接続
- 並べ替えたい順の列ヘッダのみからなるデータ
- データは0行
- #2 接続
- 並び替え対象のデータ(アンケートデータ)
- ユニオンツールの設定
ユニオンツールでは、「名前による自動設定」を選択します。フィールド名が異なる場合のオプションを「フィールドの共通サブセットを出力」とすることで、並び替えと同時に、列のフィルタを行うことも可能です。
注意点として、ユニオンツールにはじめに接続するデータは、並べ替えたい順の列ヘッダのみからなるデータとなるようにしてください。
ユニオンツールでは、設定左下の「入力データセットの出力順序を設定する」オプションでレコードの出力順を制御できますが、「名前による自動設定」時の出力列順は、ツールにはじめに接続したデータの列順となるためです。
下記はワークフロー実行後の、ユニオンツールの出力メタデータの一部です。ユニオンツールにはじめに接続したデータセットの列順に出力されていることがわかります。
さいごに
以上、ユニオンツールによる複数列の並び替え手順でした。
上記の例では、列の並び替えのみでしたが、上述の通り、列ヘッダの項目を絞りフィールド名が異なる場合のオプションを「フィールドの共通サブセットを出力」とすれば、列のフィルタも可能です。
また、上記のワークフローでは、目的の列ヘッダのみからなるデータをデータ入力ツールで与えていましたが、フィールド情報ツールを使用すればデータから列名を取得できるので、Alteryx内で目的の形に並べ替え・フィルタし、ユニオンツールのインプットとすることも可能です。
こちらの内容がどなたかの参考になれば幸いです。